package com.wangjie.diffarray;

/**
 * @author jieshao
 * @date 2022/4/8 15:40
 *
 * 1094. 拼车
 */
public class Test05 {
    public static void main(String[] args) {
        int[][] arr = {{2, 1, 5}, {3, 3, 7}};
        int length = 5;
        boolean result = carPooling(arr, length);
        System.out.println(result);
    }

    public static boolean carPooling(int[][] trips, int capacity) {
        // 最多 1000 个车站
        int[] num = new int[1001];
        for (int[] t : trips) {
            // 第 t[1] 站乘客上车
            int i = t[1];
            // 第 t[2] 站乘客已经下车，即乘客在车上的区间为 [t[1], t[2] - 1]
            int j = t[2];
            // 乘客数量
            int val = t[0];
            // 给闭区间 [i, j] 增加 val
            num[i] += val;
            if (j < num.length) {
                num[j] -= val;
            }
        }

        int res = 0;
        for (int i = 0; i < num.length; i++) {
            res += num[i];
            // 不能超载
            if (res > capacity) {
                return false;
            }
        }

        return true;
    }
}